'use strict';
const Controller = require('egg').Controller;

/**
 * @Controller 用户管理
 */
class UserController extends Controller {

  /**
   * @summary 查询所有用户
   * @description 查询所有用户
   * @router get /api/user
   * @response 200 baseResponse 创建成功
   */
  async index() {
    const { ctx, service } = this;
    const res = await service.user.findMany();
    this.ctx.helper.success({ ctx, res });
  }
  /**
   * @summary 创建用户
   * @description 创建用户，记录用户账户/密码/类型
   * @router post /auto/user
   * @request body createUserRequest *body
   * @response 200 baseResponse 创建成功
   */
  async create() {
    const { ctx, service } = this;
    // 校验参数
    ctx.validate(ctx.rule.createUserRequest);
    console.log(JSON.stringify(ctx.request.body));
    // 组装参数
    const payload = ctx.request.body || {};
    // 调用 Service 进行业务处理
    const res = await service.user.create(payload);
    // 设置响应内容和响应状态码
    ctx.helper.success({ ctx, res });
  }
  /**
   * @summary 删除单个用户
   * @description 删除单个用户
   * @router delete /api/user/{id}
   * @request path string *id eg:1 用户ID
   * @response 200 baseResponse 创建成功
   */
  async destroy() {
    const { ctx, service } = this;
    // 校验参数
    const { id } = ctx.params;
    // 调用 Service 进行业务处理
    await service.user.destroy(id);
    // 设置响应内容和响应状态码
    ctx.helper.success({ ctx });
  }
  /**
   * 修改用户
   * @summary 修改用户
   * @description 修改单个用户
   * @router PUT /api/user/
   * @request body createUserRequest *body
   * @response 200 baseResponse 创建成功
   */
  async update() {
    const { ctx, service } = this;
    // 校验参数
    ctx.validate(ctx.rule.createUserRequest);
    // 组装参数
    const { id } = ctx.params;
    const payload = ctx.request.body || {};
    // 调用 Service 进行业务处理
    await service.user.update(id, payload);
    // 设置响应内容和响应状态码
    ctx.helper.success({ ctx });
  }
  /**

   * @summary 删除所有用户
   * @description 删除所有用户
   * @router delete /api/user/{id}
   * @request path string *id
   * @response 200 baseResponse 创建成功
   */
  async removes() {
    const { ctx, service } = this;
    // 组装参数
    // const payload = ctx.queries.id
    const { id } = ctx.request.body;
    const payload = id.split(',') || [];
    // 调用 Service 进行业务处理
    const result = await service.user.removes(payload);
    // 设置响应内容和响应状态码
    ctx.helper.success({ ctx });
  }

}
module.exports = UserController;
